package com.qys.livesMall.open.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.qys.livesMall.framework.utils.SecurityUtils;
import com.qys.livesMall.open.mapper.H2OpenSysMessageMapper;
import com.qys.livesMall.open.modal.entity.H2OpenSysMessage;
import com.qys.livesMall.open.modal.entity.H2OpenSysMessageReadLog;
import com.qys.livesMall.open.mapper.H2OpenSysMessageReadLogMapper;
import com.qys.livesMall.open.modal.vo.OpenSysMessageVo;
import com.qys.livesMall.open.service.H2OpenSysMessageReadLogService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.qys.livesMall.open.service.H2OpenSysMessageService;
import jakarta.annotation.Resource;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

/**
 * <p>
 * 系统消息已读日志 服务实现类
 * </p>
 *
 * @author wzy
 * @since 2023-07-11
 */
@Service
public class H2OpenSysMessageReadLogServiceImpl extends ServiceImpl<H2OpenSysMessageReadLogMapper, H2OpenSysMessageReadLog> implements H2OpenSysMessageReadLogService {

    @Resource
    private H2OpenSysMessageMapper mapper;

    @Override
    public void updateRemind(Long id, Long userId) {
       //指定已读
        if (id.intValue() != 0){
            OpenSysMessageVo openSysMessageVo =  mapper.getSysMessage( SecurityUtils.getUserId(),id);
            if (null != openSysMessageVo){
                H2OpenSysMessageReadLog h2OpenSysMessageReadLog=getById(openSysMessageVo.getId());
                h2OpenSysMessageReadLog.setMessageState(1);
                updateById(h2OpenSysMessageReadLog);
            }

        }else {
            //传id为0 默认一键全读
            LambdaUpdateWrapper<H2OpenSysMessageReadLog> updateWrapper=new LambdaUpdateWrapper<>();
            updateWrapper.set(H2OpenSysMessageReadLog::getMessageState,1);
            updateWrapper.eq(H2OpenSysMessageReadLog::getUserId,userId);
            update(updateWrapper);
        }

    }

    @Override
    public void deleteSysMessage(Long id, Long userId) {
        //指定删除
        if (id.intValue() != 0){
            OpenSysMessageVo openSysMessageVo=mapper.getSysMessage( userId,id);
            removeById(openSysMessageVo.getId());
        }else {
            //传id为0 默认一键删除
            LambdaUpdateWrapper<H2OpenSysMessageReadLog> updateWrapper=new LambdaUpdateWrapper<>();
            updateWrapper.set(H2OpenSysMessageReadLog::getDeleted,(byte) 1);
            updateWrapper.eq(H2OpenSysMessageReadLog::getUserId,userId);
            update(updateWrapper);
        }
    }

    @Override
    public Integer getUnreadNum(Long userId) {
        Integer result=baseMapper.getUnreadNum(userId);
        return result;
    }
}
